Databases are commonly used applications found in computing systems. A database is a collection of related information about a subject organized in a useful manner that provides a base for procedures such as retrieving information, drawing conclusions and making decisions. A distributed database is a variation in which information is distributed or spread over a number of sites that are connected through a communication network.
An independent distributed database (IDDB) system provides for update-anywhere capabilities. That is, all sites running the system can perform local, autonomous database updates, and the IDDB guarantees that these updates flow to all sites on the network. Each site's updates are treated equally and a site's update is only overridden in the case of a direct data conflict when, for the most part, the latest change in time will survive.
In more detail, an IDDB allows all users at all sites to work off-line with local data. Thus, all application transactions are against the local database only, and every site locally stores “all and only” the data it needs. This means that application transactions are not network-dependent and therefore do not suffer speed or availability problems when the network or remote sites are down or loaded. The on-line transactions only occur in the background, including a periodic synchronization between sites that transmit any changes to data that is of interest to the site. If the background operations are interrupted or the network is temporarily unavailable, the user does not see new changes made at other sites until the datalink is again established, but otherwise the user remains unaffected.
Oftentimes, it is desirable to process new or modified data from certain sites on the network differently from other sites. Consider, for example, a simplistic ‘hub’ and ‘spoke’ IDDB system, where the hub represents a centralized, authoritative server and a spoke represents a single user, potentially disconnected workstation. Currently, there are no known mechanisms that extend the applicability of the IDDB to installations requiring customized post-transaction data processing or intra-system conflict handling. Further, there are no known mechanisms for interfacing the IDDB to other unrelated database or messaging systems.
Also, various issues with implementing an IDDB system are typically resolved by changing the application code specific to the IDDB installation. For example, an installation where the application is changing from a centralized implementation to one of a distributed nature often has problems with records containing keys that will not be globally unique within the IDDB system.
What is needed, therefore, are techniques that extend the applicability of distributed database technology to installations requiring customized post-transaction data processing or intra-system conflict handling. There is also a need for techniques for interfacing a distributed database with other unrelated database or messaging systems.